#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <iostream>


int main()
{
    pid_t id = fork();
    if(id == 0)
    {
        //子进程
        int i = 3;
        while(i--)
        {
            printf("子进程pid: %d\n", getpid());
            sleep(1);
        }
        exit(100);
    }
    //父进程
    while(1)
    {
        pid_t wid = waitpid(id, NULL, WNOHANG);
        if(wid > 0)
        {
            printf("wait success!\n");
            break;
        }
        else if(wid == 0)
        {
            printf("child no quit\n");
            sleep(1);
        }
        else if(wid < 0)
        {
            printf("wait error\n");
            break;
        }
    }
    return 0;
}





//int main()
//{
//    pid_t id = fork();
//    if(id == 0)
//    {
//        //子进程
//        int i = 3;
//        while(i--)
//        {
//            printf("子进程pid: %d\n", getpid());
//            sleep(1);
//        }
//        exit(100);
//    }
//    //父进程
//    int status = 0;
//    pid_t wid = waitpid(id, &status, 0);
//    if(wid > 0)
//    {
//        printf("等待子进程成功\n");
//        if(WIFEXITED(status))
//        {
//            printf("子进程正常运行结束，退出码：%d\n", WEXITSTATUS(status));
//        }
//        else{
//            printf("子进程异常终止\n");
//        }
//    }
//    return 0;
//}
